package com.net.framework.help.dialog;

import android.content.Context;
import android.view.View;
import android.view.View.OnClickListener;

import com.net.framework.help.utils.UIUtils;

/**
 * @author zhangxiaobin
 * @version V1.0
 * @ClassName: CustomSimpleDialog.java
 * @email 154722566@qq.com
 * @Date 2016年3月4日 下午1:29:16
 * @explain 简单的弹出框
 */
public class CustomSimpleDialog {
    private DialogCallback dialogCallback;
    private Context context;

    public CustomSimpleDialog(Context context) {
        // TODO Auto-generated constructor stub
        this(context, null);
    }

    public CustomSimpleDialog(Context context, DialogCallback dialogCallback) {
        // TODO Auto-generated constructor stub
        this.context = context;
        this.dialogCallback = dialogCallback;
    }

    /*------------------一个按钮---------------------------------------------------------------------------*/

    /**
     * dailog中只带有一个按钮的普通对话框(可自定义按钮文字)
     *
     * @param title      弹出框的标题
     * @param btnText    按钮文字
     * @param message    对话框消息
     * @param dialogType 对话框类型
     */
    public void getSimpleSingleBtn(int title, String btnText, String message, Object dialogType) {
        getSimpleSingleBtn(UIUtils.getString(title), btnText, message, dialogType);
    }

    public void getSimpleSingleBtn(String title, int btnText, String message, Object dialogType) {
        getSimpleSingleBtn(title, UIUtils.getString(btnText), message, dialogType);
    }

    /**
     * dailog中只带有一个按钮的普通对话框(可自定义按钮文字)
     *
     * @param title      弹出框的标题
     * @param btnText    按钮文字
     * @param message    对话框消息
     * @param dialogType 对话框类型
     */
    public void getSimpleSingleBtn(int title, int btnText, String message, Object dialogType) {
        getSimpleSingleBtn(title, UIUtils.getString(btnText), message, dialogType);
    }

    /**
     * dailog中只带有一个按钮的普通对话框(可自定义按钮文字)
     *
     * @param title      弹出框的标题
     * @param btnText    按钮文字
     * @param message    对话框消息
     * @param dialogType 对话框类型
     */
    public void getSimpleSingleBtn(int title, int btnText, int message, Object dialogType) {
        getSimpleSingleBtn(title, btnText, UIUtils.getString(message), dialogType);
    }

    /**
     * dailog中只带有一个按钮的普通对话框(可自定义按钮文字)
     *
     * @param title      弹出框的标题
     * @param btnText    按钮文字
     * @param message    对话框消息
     * @param dialogType 对话框类型
     */
    public void getSimpleSingleBtn(String title, String btnText, int message, Object dialogType) {
        getSimpleSingleBtn(title, btnText, UIUtils.getString(message), dialogType);
    }

    /**
     * dailog中只带有一个按钮的普通对话框(可自定义按钮文字)
     *
     * @param title      弹出框的标题
     * @param btnText    按钮文字
     * @param message    对话框消息
     * @param dialogType 对话框类型
     */
    public void getSimpleSingleBtn(String title, int btnText, int message, Object dialogType) {
        getSimpleSingleBtn(title, UIUtils.getString(btnText), message, dialogType);
    }

    /**
     * dailog中只带有一个按钮的普通对话框(可自定义按钮文字)
     *
     * @param title      弹出框的标题
     * @param btnText    按钮文字
     * @param message    对话框消息
     * @param dialogType 对话框类型
     */
    public void getSimpleSingleBtn(String title, String btnText, String message, final Object dialogType) {
        new AlertDialog(context).builder().setTitle(title).setMsg(message).setPositiveButton(btnText, new OnClickListener() {
            @Override
            public void onClick(View v) {
                if (null != dialogCallback) {
                    dialogCallback.onDialogButtonOk(dialogType);
                }
            }
        }).show();
    }

    /**
     * 单个按钮的弹窗，点击屏幕、返回按钮不消失
     *
     * @param title
     * @param btnText
     * @param message
     * @param dialogType
     */
    public void getSimpleSingleBtnCancelable(String title, String btnText, String message, final Object dialogType) {
        new AlertDialog(context).builder().setTitle(title).setMsg(message).setCancelable(false).setPositiveButton(btnText, new OnClickListener() {
            @Override
            public void onClick(View v) {
                if (null != dialogCallback) {
                    dialogCallback.onDialogButtonOk(dialogType);
                }
            }
        }).show();
    }

    /*------------------两个按钮---------------------------------------------------------------------------*/

    /**
     * dailog中带有两个按钮的普通对话框
     *
     * @param title      弹出框的标题
     * @param btnText    确定按钮文字
     * @param message    对话框消息
     * @param dialogType 对话框类型
     */
    public void getSimpleTwoBtn(int title, String btnText, String message, Object dialogType) {
        getSimpleTwoBtn(UIUtils.getString(title), btnText, message, dialogType);
    }

    /**
     * dailog中带有两个按钮的普通对话框
     *
     * @param title      弹出框的标题
     * @param btnText    确定按钮文字
     * @param message    对话框消息
     * @param dialogType 对话框类型
     */
    public void getSimpleTwoBtn(int title, int btnText, String message, Object dialogType) {
        getSimpleTwoBtn(title, UIUtils.getString(btnText), message, dialogType);
    }

    /**
     * dailog中带有两个按钮的普通对话框
     *
     * @param title      弹出框的标题
     * @param btnText    确定按钮文字
     * @param message    对话框消息
     * @param dialogType 对话框类型
     */
    public void getSimpleTwoBtn(int title, int btnText, int message, Object dialogType) {
        getSimpleTwoBtn(title, btnText, UIUtils.getString(message), dialogType);
    }

    public void getSimpleTwoBtn(int title, String btnText, int message, Object dialogType) {
        getSimpleTwoBtn(title, btnText, UIUtils.getString(message), dialogType);
    }

    /**
     * dailog中带有两个按钮的普通对话框
     *
     * @param title      弹出框的标题
     * @param btnText    确定按钮文字
     * @param message    对话框消息
     * @param dialogType 对话框类型
     */
    public void getSimpleTwoBtn(String title, String btnText, int message, Object dialogType) {
        getSimpleTwoBtn(title, btnText, UIUtils.getString(message), dialogType);
    }

    /**
     * dailog中带有两个按钮的普通对话框
     *
     * @param title      弹出框的标题
     * @param btnText    确定按钮文字
     * @param message    对话框消息
     * @param dialogType 对话框类型
     */
    public void getSimpleTwoBtn(String title, int btnText, int message, Object dialogType) {
        getSimpleTwoBtn(title, UIUtils.getString(btnText), message, dialogType);
    }

    /**
     * dailog中带有两个按钮的普通对话框
     *
     * @param title      弹出框的标题
     * @param btnText    确定按钮文字
     * @param message    对话框消息
     * @param dialogType 对话框类型
     */
    public void getSimpleTwoBtn(String title, String btnText, String message, final Object dialogType) {
        new AlertDialog(context).builder().setTitle(title).setMsg(message).setPositiveButton(btnText, new OnClickListener() {
            @Override
            public void onClick(View v) {
                if (null != dialogCallback) {
                    dialogCallback.onDialogButtonOk(dialogType);
                }
            }
        }).setNegativeButton(new OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        }).show();
    }


    public void getSimpleTwoBtn(final DialogCancelCallback dialogCancelCallback, String title, String btnLeftText, String btnText, String message, final Object dialogType) {
        getSimpleTwoBtn(dialogCancelCallback, title, btnLeftText, btnText, message, 0, dialogType);
    }

    public void getSimpleTwoBtn(final DialogCancelCallback dialogCancelCallback, String title, String btnLeftText, String btnText, String message, int cancelColor, final Object dialogType) {
        new AlertDialog(context).builder().setTitle(title).setMsg(message).setCancelColor(cancelColor)
                .setPositiveButton(btnText, new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        if (null != dialogCallback) {
                            dialogCallback.onDialogButtonOk(dialogType);
                        }
                    }
                }).setNegativeButton(btnLeftText, new OnClickListener() {
            @Override
            public void onClick(View v) {
                if (null != dialogCancelCallback) {
                    dialogCancelCallback.onDialogButtonCancel();
                }
            }
        }).show();
    }


    public interface DialogCallback {
        void onDialogButtonOk(Object o);
    }

    public interface DialogCancelCallback {
        void onDialogButtonCancel();
    }
}
